<template>
  <div class="person">
    <h2>姓名：{{ name }}</h2>
    <h2>年龄：{{ age }}</h2>
    <button @click="changeName">修改名字</button>
    <button @click="changeAge">修改年龄</button>
    <button @click="showTel">查看联系方式</button>
    <hr />
    <h2>测试1：{{ a }}</h2>
    <h2>测试2：{{ c }}</h2>
    <button @click="b">测试</button>
  </div>
</template>

<script lang="ts">
export default {
  name: "Person",
  data() {
    return {
      a: 100,
      // 2.data中可以通过this读取到setup中的数据
      c:this.name,
      d:900
    };
  },
  methods: {
    b() {
      console.log("b");
      console.log("this",this);
    },
  },
  // 1.data和methods可以和setup同时存在(不建议) 
  setup() {
    // console.log(this); this:undefined
    // 数据，原来是写在data中的 注意：此时的name,age,tel都不是响应式的数据
    let name = "张三";
    let age = 18;
    let tel = 121398493;
    // 3.在setup中读取不到data中的数据
    // let x = d;
    // 方法
    function changeName() {
      name = "zhang-san"; // 注意：这样修改name，页面是没有变化的
      console.log(name); // name被修改了，但是页面没有变化
    }
    function changeAge() {
      age += 1; //注意：这样修改name，页面是没有变化的
      console.log(age); // name被修改了，但是页面没有变化
    }
    function showTel() {
      alert(tel);
    }
    // 将数据和方法交出去，模板中才能直接使用
    return { name, age, changeName, changeAge, showTel };
  },
};
</script>

<style scoped>
.person {
  background-color: skyblue;
  box-shadow: 0 0 10px;
  border-radius: 10px;
  padding: 20px;
}
button {
  margin: 0 5px;
}
</style>
